<?php

namespace App\Http\Controllers\Admin;

use App\Http\Models\AdminModel;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AdminController extends Controller
{
    private $orderFiled = ['id', 'id', 'username', 'email', 'phoneNumber', 'created_at', 'is_locked'];
    // ctrl - 代码折叠 ctrl + 代码展开
    // 自行完成curd操作 主要是学习 Auth里面的登录操作
    public function lst()
    {
        // 用户的展示
        $adminData = AdminModel::latest('id')->get(); // 5.1 里面没有的； 获取最新数据 latest 按照id做倒叙排列
        return view('admin.admin.lst', compact('adminData'));
    }

    /**
     * 使用datatable展示数据信息
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function dlst()
    {
        return view('admin.admin.dlst'); // 负责展示页面，数据的操作交给 datatbale处理
    }


    public function ajaxData(Request $request)
    {
        // 返回数据 数据不是随便返回的需要按照一定的要求返回 4个要求
        $count = AdminModel::count();

        // 1. 根据关键字做查询操作
//        $keyWord = $request->get('search')['value']; // 本身携带的查询参数 自己的
        $keyWord = $request->get('keyword'); // 用户自定义查询

        $query = AdminModel::query();// 可以理解这个是一个查询句柄 专门做条件处理，但是它不返回最终的查询结果，得使用get first获取 count....
        if($keyWord){
            // 增加模糊查询  可以使用一个query查询对象
            $query->where('username', 'like', "%$keyWord%");

        }
        $queryCount = $query->count();// 满足查询条件的总记录数据


        // 2. 排序
        // order[0][column]:0
        // order[0][dir]:asc
        $orderIndex = $request->get('order')['0']['column']; // 排序索引 转换为 排序字段 [id username email phoneNumber created_at]
        $fieldName = $this->orderFiled[ $orderIndex ];
        $orderWay = $request->get('order')['0']['dir']; // 排序方式 desc asc
        // 排序查询
        $query->orderBy($fieldName, $orderWay);

        $page = $request->get('page');
        $size = $request->get('pageSize');
        if($size == -1){
            $adminData = AdminModel::orderBy($fieldName, $orderWay)->get();
        }else{
            $offset = ($page - 1) * $size; // 偏移量
            // 分页返回数据 原理 limit查询
            $adminData = $query->offset($offset)->limit($size)->get();
        }


        return [
            "draw" => $request->get('draw'), // 代表客户端的请求次数，原样返回
            "recordsTotal" => $count, // 数据的总记录
            "recordsFiltered" => $queryCount, // 条件查询后，满足条件总记录
            "data" => $adminData

        ];

    }
}
